package com.yilong.springcloudalibabanacos.generator;


import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Collections;

@RestController
public class CodeGeneratorController {

    @RequestMapping("codeCreate")
    public String codeCreate() {
        FastAutoGenerator.create("jdbc:mysql://127.0.0.1:3306/sakila?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=Asia/Shanghai", "root", "6666")
                .globalConfig(builder -> {
                    builder.author("SOOS") // 设置作者
                            .enableSwagger() // 开启 swagger 模式
                            .fileOverride() // 覆盖已生成文件
                            .outputDir("D:\\Develop\\workspace\\springcloud-alibaba-yilong\\springcloud-alibaba-nacos\\src\\main\\java"); // 指定输出目录
                })
                .packageConfig(builder -> {
                    builder.parent("com.yilong.springcloudalibabanacos") // 设置父包名
                            .moduleName("sys") // 设置父包模块名
                            .pathInfo(Collections.singletonMap(OutputFile.xml, "springcloud-alibaba-nacos/src/main/resources/mapper/sys")); // 设置mapperXml生成路径
                })
                .strategyConfig(builder -> {
                    builder.addInclude("film") // 设置需要生成的表名
                            .addTablePrefix("t_", "c_"); // 设置过滤表前缀
                })
                // 使用Freemarker引擎模板，默认的是Velocity引擎模板
                .templateEngine(new FreemarkerTemplateEngine())
                .execute();
        return "代码生成成功!!!";
    }
//    @RequestMapping("codeCreate")
//    public String codeCreate() {
//        // 全局策略配置
//        GlobalConfig globalConfig = GeneratorBuilder.globalConfigBuilder()
//                // 覆盖已生成文件
//                .fileOverride()
//                // 生成后是否打开生成目录
//                .openDir(true)
//                // 指定输出目录 默认值: windows:D:// linux or mac : /tmp
//                .outputDir("D:\\Develop\\workspace\\springcloud-alibaba-yilong\\springcloud-alibaba-nacos\\src\\main")
//                // 生成swagger注解
//                .enableSwagger()
//                // 作者名
//                .author("SOS")
//                // 时间策略
//                .dateType(DateType.TIME_PACK)
//                // 注释日期格式
//                .commentDate("yyyy-MM-dd hh:mm:ss")
//                .build();
//
//        // 数据源配置
//        DataSourceConfig dataSourceConfig = new DataSourceConfig
//                // 驱动连接的URL、数据库连接用户名、数据库连接密码
//                .Builder("jdbc:mysql://127.0.0.1:3306/sakila?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=Asia/Shanghai", "root", "6666")
//                // 类型转换,数据库=》JAVA类型
//                .typeConvert(new MySqlTypeConvert())
//                // 关键字处理 ,这里选取了mysql5.7文档中的关键字和保留字（含移除）
//                .keyWordsHandler(new MySqlKeyWordsHandler())
//                // 数据库信息查询类,默认由 dbType 类型决定选择对应数据库内置实现
//                .dbQuery(new MySqlQuery())
//                // 数据库 schema name
//                .schema("film")
//                .build();
//
//        // 包配置
//        PackageConfig packageConfig = new PackageConfig.Builder()
//                // 父包名。如果为空，将下面子包名必须写全部， 否则就只需写子包名
//                .parent("com.yilong.springcloudalibabanacos")
//                // 父包模块名
//                .moduleName("sys")
//                .build();
//
//        // 配置模板
//        TemplateConfig templateConfig = new TemplateConfig.Builder().disable().build();
//        //激活所有默认模板
//        // 添加以上配置到AutoGenerator中  // 数据源配置
//        AutoGenerator autoGenerator = new AutoGenerator(dataSourceConfig);
//        // 全局策略配置
//        autoGenerator.global(globalConfig);
//        // 包配置
//        autoGenerator.packageInfo(packageConfig);
//        // 配置模板
//        autoGenerator.template(templateConfig);
//        // 生成代码
//        autoGenerator.execute();
//        return "代码生成成功!!!";
//    }
}
